package com.cqw.commontest.lambda;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Author: caoqingwen
 * @CreateTime: 2021-06-02 14:46
 * @Description: 分组
 * 分区：将stream按条件分为两个map，比如按薪资是否高于3000分为两部分
 * 分组：将集合分为多个map，比如员工按性别分组。有单级分组和多级分组
 */
public class StreamTest7 {


    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("张三", 1000, 21, "男", "上海"));
        personList.add(new Person("李四", 2000, 25, "女", "安徽"));
        personList.add(new Person("王五", 2200, 36, "男", "杭州"));
        personList.add(new Person("赵六", 1400, 25, "女", "南京"));
        personList.add(new Person("曹七", 3000, 12, "男", "北京"));
        personList.add(new Person("Lily", 5000, 42, "女", "上海"));

        //将员工按薪资是否高于2000 的两部分
        //最后的map只有两个key true：满足条件的，false：不满足条件的
        Map<Boolean, List<Person>> collect = personList.stream().collect(Collectors.groupingBy(person -> person.getSalary() > 2000));
        //System.out.println(collect);

        //按员工性别分
        Map<String, List<Person>> collect1 = personList.stream().collect(Collectors.groupingBy(Person::getArea));
        //System.out.println(collect1);
        List<Person> 上海 = collect1.get("上海");
        System.out.println(上海);

    }
}
